#include "./../../inc/login.h"

#include "lvgl/lvgl.h"
#include "lvgl/demos/lv_demos.h"
#include "lv_drivers/display/fbdev.h"
#include "lv_drivers/indev/evdev.h"
#include <unistd.h>
#include <pthread.h>
#include <time.h>
#include <sys/time.h>

lv_obj_t * kb = NULL;
int kb_open   = 0; // 0:关闭 1:打开

// 修改后的文本框事件回调函数
void ta_event_cb(lv_event_t * e)
{
    lv_event_code_t code = lv_event_get_code(e);
    lv_obj_t * ta        = lv_event_get_target(e);
    lv_obj_t * kb        = (lv_obj_t *)lv_event_get_user_data(e);

    if(code == LV_EVENT_FOCUSED) {
        // 文本框获得焦点时显示并关联键盘
        lv_keyboard_set_textarea(kb, ta);
        lv_obj_clear_flag(kb, LV_OBJ_FLAG_HIDDEN);
        lv_obj_move_foreground(kb); // 确保键盘在最上层
        kb_open = 1;                // 打开键盘
    } else if(code == LV_EVENT_DEFOCUSED) {
        // 文本框失去焦点时隐藏键盘
        lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);
    }
}

// 覆盖层事件回调 - 点击键盘外部区域时隐藏键盘
void overlay_event_cb(lv_event_t * e)
{
    lv_event_code_t code = lv_event_get_code(e);
    lv_obj_t * overlay   = lv_event_get_target(e);
    lv_obj_t * kb        = (lv_obj_t *)lv_event_get_user_data(e);

    if(code == LV_EVENT_CLICKED) {
        // 点击覆盖层时隐藏键盘
        lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);

        // 让所有文本框失去焦点
        lv_obj_t * focus_obj = lv_group_get_focused(lv_group_get_default());
        if(focus_obj) {
            lv_event_send(focus_obj, LV_EVENT_DEFOCUSED, NULL);
        }
    }
}
